home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
cpp_libs
/
answrbok
/
6_11.lha
/
6_11
/
6_11_eq2.c
< prev
next >
Wrap
Text File
|
1993-08-08
|
1KB
|
70 lines
* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */
* The C++ Answer Book */
* Tony Hansen */
* All rights reserved. */
*
assign a (unsigned) long to an arbint
/
include <arbint.h>
onst arbperlong = sizeof(long) / sizeof(ARB_type);
rbint& arbint::operator=(long n) // x = 36L;
// get rid of old data
if (p->refcnt > 1)
{d p->refcnt--;
p = new arep;
p->refcnt = 1;
p->length = arbperlong;
p->value = new ARB_type[arbperlong];
}
// delete old value
else if (p->length != arbperlong)
{
delete p->value;
p->length = arbperlong;
p->value = new ARB_type[arbperlong];
}
// assign the new value
for (int i = arbperlong - 1; i >= 0; i--)
{
p->value[i] = n % ARB_base;
n /= ARB_base;
}
return *this;
rbint& arbint::operator=(unsigned long n) // x = 3UL;
int nlen = arbperlong;
if (((long) n) < 0)
nlen++;
// get rid of old data
if (p->refcnt > 1)
{d p->refcnt--;d p = new arep;
p->refcnt = 1;
p->length = arbperlong;
p->value = new ARB_type[arbperlong];
}
// reallocate old value
elsR if (p->length != nlen)
{
delete p->value;
p->length = nlen;
p->value = new ARB_type[nlen];
}
// assign the new value
for (int i = nlen - 1; i >= 0; i--)
{
p->value[i] = n % ARB_base;
n /= ARB_base;
}
return *this;